package org.foreningsgatan.genetics;

import java.io.Serializable;
import java.util.Comparator;


public interface SimulationEnvironment<T extends Serializable, S extends Serializable> extends Comparator<ResultSet>, Serializable {
	
	/**
	 * Perform action
	 * 
	 * @param action
	 */
	public void perform(S action);
	
	/**
	 * Read from data source
	 * @param dataSource
	 * @return
	 */
	public float read(T dataSource);
	
	public void resetAll();
	public boolean simulationActive();
	public void act();
	public void applyResult(ResultSet resultSet);
	
	public SimulationEnvironment<T, S> cloneAndReset();
}
